/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package compilador.datos;

import java.util.ArrayList;



/**
 *
 * @author Iñaki Goffard, F. Javier S. Pardo
 *
 */
public class Resultado {

    private boolean error;
    private ExprTipos tipo;
    private int dir;
    private String identificador;
    private ArrayList pend;//No veo por qué no se podría hacer con hashtable, y eso que lo cambié yo...
    //etqi: atributo que contiene el número de la primera línea de código del bloque else.
    //Se necesita para la resolución del salto del if en bloques if que tienen else.
    private int etqi;

    //Para pasar las definiciones de parámetros entre llamadas
    private ArrayList<Parametro> paramsProc;

    //Para indicar el modo del parametro (valor o variable)
    private String claseParam;

    public Resultado (){

        this.error = false;
        this.tipo = null;
        this.dir=0;
        this.identificador ="";
        this.pend =new ArrayList();
    }

    public Resultado (ExprTipos tipo){
        this.error = false;
        this.tipo = tipo;
        this.dir=0;
        this.identificador ="";
        this.pend = new ArrayList();

    }

    public void setError(boolean error){

        this.error = error;

    }

    public void setTipo (String tipo){
//
//        //this.tipo = tipo;-->Esto ahora cambia
//
    }

    public void setTipo (ExprTipos tipo){
        this.tipo =tipo;
    }

    public void setDir (int dir){

        this.dir = dir;

    }

    public void setIdentificador (String identificador){

        this.identificador=identificador;

    }

    public boolean getError(){

        return this.error;

    }

    public String getTipo(){

        return this.tipo.getTipo();
    }

    public ExprTipos getTipoComp(){
        return this.tipo;
    }

    public int getDir(){

        return this.dir;
        
    }

    public String getIdentificador (){

        return this.identificador;

    }

    public ArrayList getPend(){
        return this.pend;
    }

    public void setPend(ArrayList pend){
        this.pend = pend;
    }

    public int getEtqi(){
        return this.etqi;
    }

    public void setEtqi(int etqi){
        this.etqi = etqi;
    }

    @Override
    public String toString(){
        String sAux = "";
        sAux = "Error: " + this.error + "\n";
        sAux += "id: " + this.identificador + "\n";
        sAux += "Dir: " + this.dir + "\n";
        if (this.tipo != null) 
            return sAux + "Tipo: " + this.tipo.toString();
        else
            return sAux + "Sin tipo asignado.";
    }

    /**
     * @return the paramsProc
     */
    public ArrayList<Parametro> getParamsProc() {
        return paramsProc;
    }

    /**
     * @param paramsProc the paramsProc to set
     */
    public void setParamsProc(ArrayList<Parametro> procParams) {
        this.paramsProc = procParams;
    }

    /**
     * @return the sModoParam
     */
    public String getClaseParam() {
        return claseParam;
    }

    /**
     * @param sModoParam the sModoParam to set
     */
    public void setClaseParam(String sModoParam) {
        this.claseParam = sModoParam;
    }
}
